There is no listener for the button's events. If there is no listener for a particular type of event, then the program ignores events of that type.
There is a listener for the frame's "close button," but not for the button. You can click the button, and generate an event, but no listener receives the event.
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ButtonDemo extends JFrame { JButton bChange ; // constructor for ButtonDemo ButtonDemo() { // construct a Button JButton bChange = new JButton("Click Me!"); // add the button to the JFrame getContentPane().add( bChange ); } public static void main ( String[] args ) { ButtonDemo frm = new ButtonDemo(); WindowQuitter wquit = new WindowQuitter(); frm.addWindowListener( wquit ); frm.setSize( 200, 150 ); frm.setVisible( true ); } } class WindowQuitter extends WindowAdapter { public void windowClosing( WindowEvent e ) { System.exit( 0 ); } }
main()
.main()
asks the system to construct a buttonDemo
object.JButton
is constructed using new
with a constructor,
as with any class.
bChange
refers to the JButton
.buttonDemo
constructor uses
getContentPane().add( bChange )
to add the button to the frame.buttonDemo
class does not have its own paint()
method because everything to be painted is a component.drawString()
in the previous chapter), then you will need to override paint()
.The program in the previous chapter does not define a constructor because it inherits the constructor from its parent class (JFrame), which is enough to do the job. When you add components to a container, you need to define a constructor for the frame.